// 顶部类型定义声明(必须是顶部), 否则vite不认识vitest, 从而导致红色波浪线
/// <reference types="vitest" />
import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import vueJsx from "@vitejs/plugin-vue-jsx";
import vueSetupExtend from "vite-plugin-vue-setup-extend";
import Unocss from "./config/unocss";

// rollup配置
const rollupOptions = {
  external: ["vue", "vue-router"],
  output: {
    globals: {
      vue: "Vue",
    },
  },
};

export default defineConfig({
  plugins: [
    vue(),
    vueJsx({}),
    vueSetupExtend(),
    // 加载 Unocss 插件后，Vite 会通过分析 class 的使用状况提供相应的样式定义
    Unocss(),
  ],
  // 添加库模式配置(配置构建工具)
  build: {
    rollupOptions,
    cssCodeSplit: true,
    minify: false,
    lib: {
      entry: "./src/entry.ts",
      name: "BrevityUI",
      fileName: "brevity-ui",
      // 导出模块格式
      formats: ["cjs", "es", "umd"],
    },
  },
  // vite中配置测试库
  test: {
    // 允许全局使用jest相关API
    globals: true,
    // 使用happy-dom模拟DOM
    environment: "happy-dom",
    // 支持tsx组件，很关键
    transformMode: {
      web: [/.[tj]sx$/],
    },
  },
});
